<?php
/**
 * @class		ManageController
 * @ingroup		editable_pages_controllers
 * @brief		Controller của đối tượng EditablePage, bao gồm các phương thức điều khiển các luồng xử lý để quản lý thông tin của các trang EditablePage
 * @author		BinhQD
 * @version		1.1
 * @date		2010-04-22
 */
class ManageController extends AppController {
	/**
	 @var $model
	 @brief Thông tin về model, được sử dụng trong trường hợp override thông tin của danh mục
	 */
	var $models = array(
		'Category'	=>	array(
			'plugin'	=>	'categories',
			'name'		=>	'Category'
		),
		'Page'		=>	array(
			'plugin'	=>	'editable_pages',
			'name'		=>	'EditablePage'
		)
	);
	
	/**
	 @var $name
	 @brief Tên của controller
	 */
	var $name = 'Manage';
	
	/**
	 @var $uses
	 @brief Danh sách tất cả các model được sử dụng trong controller
	 */
	var $uses = array();
	
	/**
	 @var $helpers
	 @brief Danh sách tất cả các Helper được sử dụng trong view
	 */
	var $helpers = array('Form','Wysiwyg');
	
	/**
	 @var $components
	 @brief Danh sách tất cả các Component được sử dụng trong controller
	 */
	var $components = array('MultiFileUpload');
	
	/**
	 @var $configs
	 @brief Tên của biến config
	 */
	var $configs = array();
	
	/**
	 @var $category_root_id
	 @brief Id của danh mục gốc của hệ thống quản lý trang
	 */
	var $category_root_id = null;
	
	/**
	 * Phương thức được sử dụng để thực hiện các xử lý trước khi bắt đầu 1 hành động
	 */
	function beforeFilter() {
		parent::beforeFilter();
		foreach ($this->models as $key => $item) {
			App::import('Model', $item['plugin'].".".$item['name']);
			$this->loadModel($item['name']);
		}
		$this->set('models', $this->models);
		
		if (get_class($this) == 'ManageController') {
			$this->configs = $this->{$this->models['Page']['name']}->loadConfig();
			if (isset($this->params['named']['root']) && isset($this->configs[$this->models['Page']['name']][$this->params['named']['root']])) {
				$this->category_root_id = $this->configs[$this->models['Page']['name']][$this->params['named']['root']]['id'];
			} else {
				$this->category_root_id = null;
				$this->params['named']['root'] = null;
			}
			$this->set('configs', $this->configs);
		}
	}
	
	/**
	 * Hành động liệt kê ra danh sách các trang, có phân trang
	 */
	function index() {
		$pages = $this->{$this->models['Page']['name']}->getList($this, $this->configs);
		$this->set('pages', $pages);
	}
	
	/**
	 * Phương thức được sử dụng để tạo mới một trang, bao gồm hiển thị form nhập liệu và xử lý các thông tin nhập liệu đó
	 */
	function add() {
		if (empty($this->data)) {
			// load dữ liệu trong trường hợp phát sinh lỗi
			$this->__checkError($this->models['Page']['name']);
			
			// Check error of extra fields tables
			if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
				foreach ($this->configs['ExtraFields'] as $item) {
					App::import('Model', "{$this->params['plugin']}.{$item['model']}");
					$this->loadModel($item['model']);
					$this->__checkError($item['model']);
				}
			}
			
			$nodes = $this->{$this->models['Category']['name']}->children($this->category_root_id, false, array('id','name','lft','rght','parent_id'));
			$tree = $this->{$this->models['Category']['name']}->transformToTree($nodes);
			$this->set('categories', $tree);

			// for extended categories
			$extended_trees = array();
			foreach ($this->configs[$this->models['Page']['name']]['extended_categories'] as $extendedCategory) {
				App::import('Model', $extendedCategory['model']);
				$parts = explode(".", $extendedCategory['model']);
				
				if (count($parts) > 1) {
					$className = $parts[1];
				} else {
					$className = $parts[0];
				}
				$this->{$className} = ClassRegistry::init($className);
				$nodes = $this->{$className}->children($extendedCategory['root_id'], false, array('id','name','lft','rght','parent_id'));
				$extended_trees[$extendedCategory['id']] = $this->{$className}->transformToTree($nodes);
			}
			/*foreach ($this->configs[$this->models['Page']['name']]['extended_categories'] as $cat_id) {
				$nodes = $this->{$this->models['Category']['name']}->children($cat_id, false, array('id','name','lft','rght','parent_id'));
				$extended_trees[$cat_id] = $this->{$this->models['Category']['name']}->transformToTree($nodes);
			}*/
			$this->set('extended_trees', $extended_trees);
			
			$this->set('category_root_id', $this->category_root_id);
			
		} else {
			try {
				//debug($this->data);exit;
				// Create Category Information
				$this->data = $this->{$this->models['Page']['name']}->validateData($this->data);
				if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
					foreach ($this->configs['ExtraFields'] as $item) {
						App::import('Model', "{$this->params['plugin']}.{$item['model']}");
						$this->loadModel($item['model']);
						
						$this->{$item['model']}->set($this->data);
						$ex_fields = $this->{$item['model']}->invalidFields($this->data);
						if (!empty($ex_fields)) {
							$this->__setError($item['model']);
							$this->Session->setFlash(__("Có một vài lỗi xuất hiện trong form dữ liệu của bạn. Vui lòng kiểm tra lại các dữ liệu nhập", true));
							$this->redirect("/".$this->params['url']['url']);
						}
					}
				}
			} catch (Exception $ex) {
				$this->__setError($this->models['Page']['name']);
				$this->Session->setFlash($ex->getMessage());
				$this->redirect("/".$this->params['url']['url']);
			}
			
			// Xử lý với image
			$image = "";
			//debug($this->data);exit;
			if (isset($this->configs[$this->models['Page']['name']]['image']['show']) && $this->configs[$this->models['Page']['name']]['image']['show']) {
				$this->MultiFileUpload->encode_filename = false;
				$this->MultiFileUpload->uploadpath = $this->configs[$this->models['Page']['name']]['image']['path'];
				if (isset($this->configs[$this->models['Page']['name']]['upload']) && isset($this->configs[$this->models['Page']['name']]['upload']['AttachTypeAllowed'])) {
					$this->MultiFileUpload->_properties['AttachTypeAllowed'] = $this->configs[$this->models['Page']['name']]['upload']['AttachTypeAllowed'];
				}
				
				$imgRet = array();
				try {
					$imgRet = $this->MultiFileUpload->upload();
				} catch (Exception $ex) {
					$this->Session->setFlash($ex->getMessage());
					$this->redirect(array(
						'action'	=> 'index',
						'root'		=>	$this->params['named']['root']
					));
				}

				if (count($imgRet) && isset($imgRet['image']['image'])) {
					//debug($imgRet);exit;
					// assign name to image field.
					$this->data[$this->models['Page']['name']]['image'] = $imgRet['image']['image'];
					
					App::import('Vendor','images/my_image'); 
					$thumbnail_dir = $this->configs[$this->models['Page']['name']]['thumbnail']['path'];
					
					// Nếu chế độ là tự động resize, tiến hành resize
					$my_image = new my_image($this->MultiFileUpload->uploadpath.$imgRet['image']['image']);
					if (isset($this->configs[$this->models['Page']['name']]['image']['autoResize']) && $this->configs[$this->models['Page']['name']]['image']['autoResize']) {
						// resize image
						$my_image->thumbnail(
							$this->configs[$this->models['Page']['name']]['image']['width'],
							$this->configs[$this->models['Page']['name']]['image']['height'],
							$this->configs[$this->models['Page']['name']]['image']['percent']
						);
						$my_image->copyTo($this->MultiFileUpload->uploadpath.$imgRet['image']['image']);
					}
					
					
					if (!is_dir($thumbnail_dir)) {
						mkdir($thumbnail_dir);
					}
					// create thumbnail
					$my_image->thumbnail(
						$this->configs[$this->models['Page']['name']]['thumbnail']['width'],
						$this->configs[$this->models['Page']['name']]['thumbnail']['height'],
						$this->configs[$this->models['Page']['name']]['thumbnail']['percent']
					);
					
					$ext = strrchr($imgRet['image']['image'], ".");
					$pos = strrpos($imgRet['image']['image'], ".");
					$filename = substr($imgRet['image']['image'],0,$pos);
					$thumbnail_name = $filename."_thumbnail".$ext;
					$my_image->copyTo($thumbnail_dir.$thumbnail_name);

					$image = $imgRet['image']['image'];
				}
				
				/**
				 * Nếu có image, nạp image vào những chỗ cần thiết
				 */
				if (isset($this->{$this->models['Page']['name']}->dataCloner['image'])) {
					foreach ($imgRet as $key => $item) {
						if (isset($this->{$this->models['Page']['name']}->dataCloner['image'][$key])) {
							$info = $this->{$this->models['Page']['name']}->dataCloner['image'][$key];
							$this->data[$info['model']][$info['field']] = $item[$key]; 
						}
					}
				}
			}
			
			$this->{$this->models['Page']['name']}->create($this->data);
			if ($this->{$this->models['Page']['name']}->save($this->data)) {
				//exit;
				// Save extra fields
				if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
					foreach ($this->configs['ExtraFields'] as $item) {
						$this->data[$item['model']]['foreign_id'] = $this->{$this->models['Page']['name']}->id;
						
						$this->{$item['model']}->create($this->data);
						$this->{$item['model']}->save($this->data);
					}
				}
				
				// Xử lý cho trường hợp hỗ trợ related page
				if (
					isset($this->params['named']['related_group'])
					&& isset($this->params['named']['related_id'])
					&& isset($this->params['named']['back_url'])
				) {
					$relatedInfo = $this->{$this->models['Page']['name']}->relatedInfo['belongsTo'][$this->params['named']['related_group']];
					// Trích chính xác tên plugin & model
					if (strpos($relatedInfo['model'], '.') !== false) {
						list($plugin, $modelClass) = explode('.', $relatedInfo['model']);
					} else {
						$plugin = null;
						$modelClass = $relatedInfo['model'];
					}
					
					// Save xuống bảng related pages
					$this->data['RelatedPage'] = array(
						'related_page_model'		=>	$this->models['Page']['name'],
						'related_page_foreign_key'	=>	$this->{$this->models['Page']['name']}->id,
						'model'						=>	$modelClass,
						'foreign_key'				=>	$this->params['named']['related_id'],
						'group'						=>	$this->params['named']['related_group'],
					);
					$this->RelatedPage =& ClassRegistry::init('RelatedPage');
					$this->RelatedPage->create();
					$this->RelatedPage->save($this->data);
					$this->Session->setFlash(__("Related page has been created successful!", true));
					
					$this->redirect(base64_decode($this->params['named']['back_url']));
				} else {
					$this->Session->setFlash(__("Trang đã được tạo thành công!", true));
					$this->redirect(array(
						'action'	=> 'index',
						'root'		=>	$this->params['named']['root']
					));
				}
			} else {
				if (isset($this->configs[$this->models['Page']['name']]['image']['show']) && $this->configs[$this->models['Page']['name']]['image']['show']) {
					// Delete uploaded image
					$this->{$this->models['Page']['name']}->__delete_image($image, $this->configs[$this->models['Page']['name']]);
				}
				$this->__setError($this->models['Page']['name']);
				
				if (isset($this->params['named']['type']) && $this->params['named']['type'] == "related_pages") {
					$this->Session->setFlash(__("Không thể lưu thông tin trang. Vui lòng thử lại", true));
				} else {
					$this->Session->setFlash(__("Không thể lưu thông tin trang liên quan. Bạn vui lòng thử lại", true));
				}
				
				$this->redirect("/".$this->params['url']['url']);
			}
		}
	}
	
	/**
	 * Phương thức được sử dụng để chỉnh sửa thông tin một trang, bao gồm hiển thị form nhập liệu và xử lý các thông tin nhập liệu đó
	 * @param $id ID của trang cần chỉnh sửa
	 */
	function edit($id=null) {
		if (empty($this->data)) {
			if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
				foreach ($this->configs['ExtraFields'] as $item) {
					App::import('Model', "{$this->params['plugin']}.{$item['model']}");
					$this->{$this->models['Page']['name']}->bindModel(
						array('hasOne' => array(
							"{$item['model']}" => array(
								"className" 	=> "{$item['model']}",
								"foreignKey"	=> "foreign_id"
							)
						)
					), false);
				}
			}
			
			$this->data = $this->{$this->models['Page']['name']}->read(null, $id);

			// load dữ liệu trong trường hợp phát sinh lỗi
			$this->__checkError($this->models['Page']['name']);
			
			// Check error of extra fields tables
			if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
				foreach ($this->configs['ExtraFields'] as $item) {
					$this->loadModel($item['model']);
					$this->__checkError($item['model']);
				}
			}
			
			$nodes = $this->{$this->models['Category']['name']}->children($this->category_root_id, false);
			$tree = $this->{$this->models['Category']['name']}->transformToTree($nodes);
			$this->set('categories', $tree);

			// for extended categories
			$extended_trees = array();
			foreach ($this->configs[$this->models['Page']['name']]['extended_categories'] as $extendedCategory) {
				App::import('Model', $extendedCategory['model']);
				$parts = explode(".", $extendedCategory['model']);
				
				if (count($parts) > 1) {
					$className = $parts[1];
				} else {
					$className = $parts[0];
				}

				$this->{$className} = new $className();
				//debug($this->{$className});exit;
				$nodes = $this->{$className}->children($extendedCategory['root_id'], false, array('id','name','lft','rght','parent_id'));
				$extended_trees[$extendedCategory['id']] = $this->{$className}->transformToTree($nodes);
			}

			$this->set('extended_trees', $extended_trees);

			$this->set('category_root_id', $this->category_root_id);
			
			// Load Related Pages if exists
			$relatedInfo = array();
			if (isset($this->{$this->models['Page']['name']}->relatedInfo)) {
				$relatedInfo = $this->{$this->models['Page']['name']}->relatedInfo;
			}
			
			$related_pages = $this->{$this->models['Page']['name']}->getRelatedInfo($this, $id);

			$this->set('relatedInfo', $relatedInfo);
			$this->set('related_pages', $related_pages);
			
		} else {
			try {
				// Create Category Information
				$this->data = $this->{$this->models['Page']['name']}->validateData($this->data);
				if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
					foreach ($this->configs['ExtraFields'] as $item) {
						App::import('Model', "{$this->params['plugin']}.{$item['model']}");
						$this->loadModel($item['model']);
						
						$this->{$item['model']}->set($this->data);
						$ex_fields = $this->{$item['model']}->invalidFields($this->data);
						if (!empty($ex_fields)) {
							$this->__setError($item['model']);
							$this->Session->setFlash(__("Có một vài lỗi xuất hiện khi nhập dữ liệu. Bạn vui lòng kiểm tra lại tất cả các dữ liệu nhập", true));
							$this->redirect("/".$this->params['url']['url']);
						}
					}
				}
			} catch (Exception $ex) {
				$this->__setError($this->models['Page']['name']);
				$this->Session->setFlash($ex->getMessage());

				$this->redirect("/".$this->params['url']['url']);
			}
			
			// Xá»­ lÃ½ vá»›i image
			$image = "";
			if (isset($this->configs[$this->models['Page']['name']]['image']['show']) && $this->configs[$this->models['Page']['name']]['image']['show']) {
				$oldImage = "";
				$this->MultiFileUpload->encode_filename = false;
				$this->MultiFileUpload->uploadpath = $this->configs[$this->models['Page']['name']]['image']['path'];
				if (isset($this->configs[$this->models['Page']['name']]['upload']) && isset($this->configs[$this->models['Page']['name']]['upload']['AttachTypeAllowed'])) {
					$this->MultiFileUpload->_properties['AttachTypeAllowed'] = $this->configs[$this->models['Page']['name']]['upload']['AttachTypeAllowed'];
				}
				
				$imgRet = array();
				try {
					$imgRet = $this->MultiFileUpload->upload();
				} catch (Exception $ex) {
					$this->Session->setFlash($ex->getMessage());
					$this->redirect(array(
						'action' => 'index',
						'root'		=>	$this->params['named']['root']
					));
				}
				
				if (count($imgRet) && isset($imgRet['image']['image'])) {
					// assign name to image field.
					$this->data[$this->models['Page']['name']]['image'] = $imgRet['image']['image'];
					App::import('Vendor','images/my_image'); 
					$thumbnail_dir = $this->configs[$this->models['Page']['name']]['thumbnail']['path'];
					
					$my_image = new my_image($this->MultiFileUpload->uploadpath.$imgRet['image']['image']);
					if (isset($this->configs[$this->models['Page']['name']]['image']['autoResize']) && $this->configs[$this->models['Page']['name']]['image']['autoResize']) {
						
						// resize image
						$my_image->thumbnail(
							$this->configs[$this->models['Page']['name']]['image']['width'],
							$this->configs[$this->models['Page']['name']]['image']['height'],
							$this->configs[$this->models['Page']['name']]['image']['percent']
						);
						$my_image->copyTo($this->MultiFileUpload->uploadpath.$imgRet['image']['image']);
					}
					
					if (!is_dir($thumbnail_dir)) {
						mkdir($thumbnail_dir);
					}
					// create thumbnail
					$my_image->thumbnail(
						$this->configs[$this->models['Page']['name']]['thumbnail']['width'],
						$this->configs[$this->models['Page']['name']]['thumbnail']['height'],
						$this->configs[$this->models['Page']['name']]['thumbnail']['percent']
					);
					
					$ext = strrchr($imgRet['image']['image'], ".");
					$pos = strrpos($imgRet['image']['image'], ".");
					$filename = substr($imgRet['image']['image'],0,$pos);
					$thumbnail_name = $filename."_thumbnail".$ext;
					$my_image->copyTo($thumbnail_dir.$thumbnail_name);
					
					$image = $imgRet['image']['image'];
					
					// Get Old Image
					$oldImage = $this->{$this->models['Page']['name']}->field('image');
				}
				
				/**
				 * Nếu có image, nạp image vào những chỗ cần thiết
				 */
				if (isset($this->{$this->models['Page']['name']}->dataCloner['image'])) {
					foreach ($imgRet as $key => $item) {
						if (isset($this->{$this->models['Page']['name']}->dataCloner['image'][$key])) {
							$info = $this->{$this->models['Page']['name']}->dataCloner['image'][$key];
							if (!isset($this->data[$info['model']]['foreign_id'])) {
								$this->data[$info['model']]['foreign_id'] = $id; 
							}
							$this->data[$info['model']][$info['field']] = $item[$key]; 
						}
					}
				}
			}
			
			if ($this->{$this->models['Page']['name']}->save($this->data)) {
//				if (isset($this->configs[$this->models['Page']['name']]['image']['show']) && $this->configs[$this->models['Page']['name']]['image']['show']) {
//					// delete old image
//					$this->{$this->models['Page']['name']}->__delete_image($oldImage, $this->configs[$this->models['Page']['name']]);
//				}
//				exit('here');
				// Save Extra Fields
				if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
					foreach ($this->configs['ExtraFields'] as $item) {
						App::import('Model', "{$this->params['plugin']}.{$item['model']}");
						$this->{$item['model']} = ClassRegistry::init($item['model']);
						$this->{$item['model']}->save($this->data);
					}
				}
				
				// Related Pages
				if (
					isset($this->params['named']['related_group']) 
					&& isset($this->params['named']['related_id']) 
					&& isset($this->params['named']['back_url'])
				) {
					$this->Session->setFlash(__("Related page has been updated successful!", true));
					$this->redirect(base64_decode($this->params['named']['back_url']));
				} else {
					$this->Session->setFlash(__("Trang đã được cập nhật thành công!", true));
					$this->redirect(array(
						'action'	=> 'edit',
						$id,
						'root'		=>	$this->params['named']['root']
					));
				}
			} else {
				if (isset($this->configs[$this->models['Page']['name']]['image']['show']) && $this->configs[$this->models['Page']['name']]['image']['show']) {
					// Delete uploaded image
					$this->{$this->models['Page']['name']}->__delete_image($image, $this->configs[$this->models['Page']['name']]);
				}
				$this->__setError($this->models['Page']['name']);
				
				// Set Flash Message
				if (isset($this->data[$this->models['Page']['name']]['type']) && $this->data[$this->models['Page']['name']]['type'] == "related_pages") {
					$this->Session->setFlash(__("Không thể lưu thông tin trang liên quan. Bạn vui lòng thử lại", true));
				} else {
					$this->Session->setFlash(__("Không thể lưu thông tin trang. Bạn vui lòng thử lại", true));
				}
				
				// Redirect to current page for refreshing
				$this->redirect("/".$this->params['url']['url']);
			}
		}
	}
	
	/**
	 * Hành động delete được sử dụng để xóa 1 trang, bao gồm thông tin dữ liệu của trang và các thông tin liên quan như hình ảnh, dữ liệu liên quan, ...
	 * @param $id ID của trang cần xóa
	 */
	function delete($id) {
		// Delete Image First
		try {
			if (isset($this->configs['ExtraFields']) && !empty($this->configs['ExtraFields'])) {
				foreach ($this->configs['ExtraFields'] as $item) {
					App::import('Model', "{$this->params['plugin']}.{$item['model']}");
					$this->{$this->models['Page']['name']}->bindModel(
						array('hasOne' => array(
							"{$item['model']}" => array(
								"className" 	=> "{$item['model']}",
								"foreignKey"	=> "foreign_id",
								"dependent"		=> true
							)
						)
					), false);
				}
			}
			
			$this->{$this->models['Page']['name']}->deletePage($id);
			// Related Pages
			if (
				isset($this->params['named']['related_group'])
				&& isset($this->params['named']['related_id'])
				&& isset($this->params['named']['back_url'])
			) {
				$this->Session->setFlash(__("Related page has been delete successful!", true));
				$this->redirect(base64_decode($this->params['named']['back_url']));
			} else {
				$this->Session->setFlash(__("Page has been delete successful!", true));
				$this->redirect(array(
					'action'	=>	'index',
					'root'		=>	$this->params['named']['root']
				));
			}
			
		} catch (Exception $ex) {
			if (isset($this->params['named']['type']) && $this->params['named']['type'] == "related_pages") {
				$this->Session->setFlash(__("Can't delete this related page. Please try again", true));
				$params = unserialize(base64_decode($this->params['named']['params']));
				$this->redirect($params['pass'] + array(
					'plugin'	=>	$params['plugin'],
					'controller'	=>	$params['controller'],
					'action'	=>	$params['action'],
					'root'		=>	$params['root']
				));
			} else {
				$this->Session->setFlash(__("Can't delete this page. Please try again", true));
				$this->redirect(array(
					'action'	=>	'index',
					'root'		=>	$this->params['named']['root']
				));
			}
			
		}
		
	}

	/**
	 * Phương thức được sử dụng để xóa hình ảnh của trang, bao gồm cả xóa thông tin dữ liệu và hình ảnh trên ổ cứng (kể cả thumbnail nếu có)
	 * @return unknown_type
	 */
	function delete_image() {
		if (isset($this->params['named']['page_id'])) {
			$id = intval($this->params['named']['page_id']);
			
			// Delete image in database
			$oldImage = $this->{$this->models['Page']['name']}->deleteImage($id);
			
			// Delete image in hard-disk
			$this->{$this->models['Page']['name']}->__delete_image($oldImage, $this->configs[$this->models['Page']['name']]);
			
			// redirect
			$this->Session->setFlash(__("Hình ảnh đã được xóa thành công!", true));
			$this->redirect(array(
				'action'=>'edit', 
				$id,
				'root'		=>	$this->params['named']['root']
			));
		} else {
			$this->Session->setFlash(__('Sai mã trang', true));
			$this->redirect(array(
				'action'=>'index',
				'root'		=>	$this->params['named']['root']
			));
		}
	}
	
	/**
	 * Phương thức được sử dụng để cập nhật lại thứ tự các trang (Mặc định của hệ thống là sắp xếp từ cao xuống thấp)
	 */
	function update_priority() {
		if (isset($_POST) && !empty($_POST)) {
			$this->data = array();
			foreach ($_POST['priority'] as $id => $item) {
				$this->data[][$this->models['Page']['name']] = array(
					'id'		=>	$id,
					'priority'	=>	$item
				);
			}
			//debug($_SERVER);exit;
			//debug($this->data);exit;
			$this->{$this->models['Page']['name']}->Behaviors->detach('Sluggable');
			$this->{$this->models['Page']['name']}->saveAll($this->data);
			$this->Session->setFlash(__("Độ ưu tiên đã được cập nhật!", true));
			
			if (isset($_SERVER['HTTP_REFERER'])) {
				$this->redirect($_SERVER['HTTP_REFERER']);
				//header("Location: ".$_SERVER['HTTP_REFERER']);
			} else {
				$this->redirect(array('action' => 'index'));
			}
		}
	}
}
?>